分享人:甘乐
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
POM(Project Object model 项目对象模型),是Maven项目的核心,定义了项目的基本信息, 用于描述项目如何构建,声明项目依赖等。POM可以与实际的Java代码相独立,实现解耦或者正交性。
实际应用中,一个项目往往是由多个 project 构成的,在进行构建(build)时,针对多个 project 分别执行多次构建命令,这样极容易产生遗漏也会大大降低效率。 Maven 的聚合功能可以通过一个父模块将所有的要构建模块整合起来,将父模块的打包类型声明为 POM,通过"modules"将各模块集中到父 POM 中。
父模块不需要有源代码和资源文件,即没有 src/main/java 和 src/test/java 目录。Maven首先解析父模块的 POM 文件,分析要构建的模块,并通过各模块的依赖关系计算一个反应堆构建顺序(Reactor Build Order ), 根据这个顺序依次构建模块。将各子模块聚合到父模块中后,就可以对父模块进行一次构建命令来完成全部模块的构建。反应堆(Reactor)是所有模块组成的一个构建结果。
执行mvn clean install,控制台输出提示compilation failure。
由于compiler插件默认支持的java版本较低,需要对其进行配置,向pom.xml加入相关
聚合和继承存在一些共性和潜在的联系,在实际的应用中,经常将聚合模块的父模块和继承的父模块定义为同一个;并不是所有的 POM 元素都可以被继承。
Maven提供了dependencyManagement元素让子模块继承到父模块的依赖设置,又能保证子模块依赖使用的灵活性。完整的依赖声明 包含在在父POM中,子模块只需要配置简单的groupId和artifactId就能获得相应的依赖信息,从而引入正确的依赖。
类似的,Maven提供了pluginManagement元素帮助管理插件继承。
1.许晓斌. Maven实战. 北京:机械工业出版社,2017.
今天的分享就到这里啦,欢迎大家提问和探讨!